import { NextRequest, NextResponse } from 'next/server';
import { UserModel } from '@/models/user';

// GET /api/profile/awards/[id] - 获取特定获奖情况详情
export async function GET(
  req: NextRequest,
  { params }: { params: { id: string } }
) {
  try {
    // 从请求头获取token并验证用户身份
    const authHeader = req.headers.get('authorization');
    
    if (!authHeader || !authHeader.startsWith('Bearer ')) {
      return NextResponse.json(
        { message: '未授权访问' },
        { status: 401 }
      );
    }
    
    const token = authHeader.split(' ')[1];
    
    // 解析JWT token
    let userId;
    try {
      const payload = JSON.parse(atob(token.split('.')[1]));
      userId = payload.id;
      
      if (!userId) {
        return NextResponse.json(
          { message: '无效的用户凭证' },
          { status: 401 }
        );
      }
    } catch (e) {
      console.error('解析token失败:', e);
      return NextResponse.json(
        { message: '无效的用户凭证' },
        { status: 401 }
      );
    }
    
    const awardId = parseInt(params.id);
    
    if (isNaN(awardId)) {
      return NextResponse.json(
        { message: '无效的奖项ID' },
        { status: 400 }
      );
    }
    
    // 获取特定奖项详情
    const award = await UserModel.getAwardById(awardId, userId);
    
    if (!award) {
      return NextResponse.json(
        { message: '奖项不存在或无权访问' },
        { status: 404 }
      );
    }
    
    return NextResponse.json(
      award,
      { status: 200 }
    );
  } catch (error: any) {
    console.error('获取奖项详情时出错:', error);
    
    return NextResponse.json(
      { message: '获取奖项详情失败', error: error.message },
      { status: 500 }
    );
  }
}

// PUT /api/profile/awards/[id] - 更新特定获奖情况
export async function PUT(
  req: NextRequest,
  { params }: { params: { id: string } }
) {
  try {
    // 从请求头获取token并验证用户身份
    const authHeader = req.headers.get('authorization');
    
    if (!authHeader || !authHeader.startsWith('Bearer ')) {
      return NextResponse.json(
        { message: '未授权访问' },
        { status: 401 }
      );
    }
    
    const token = authHeader.split(' ')[1];
    
    // 解析JWT token
    let userId;
    try {
      const payload = JSON.parse(atob(token.split('.')[1]));
      userId = payload.id;
      
      if (!userId) {
        return NextResponse.json(
          { message: '无效的用户凭证' },
          { status: 401 }
        );
      }
    } catch (e) {
      console.error('解析token失败:', e);
      return NextResponse.json(
        { message: '无效的用户凭证' },
        { status: 401 }
      );
    }
    
    const awardId = parseInt(params.id);
    
    if (isNaN(awardId)) {
      return NextResponse.json(
        { message: '无效的奖项ID' },
        { status: 400 }
      );
    }
    
    // 解析请求体
    const body = await req.json();
    
    // 验证必需字段
    if (!body.name || !body.issuer || !body.date) {
      return NextResponse.json(
        { message: '缺少必要字段' },
        { status: 400 }
      );
    }
    
    // 验证奖项所有权
    const existingAward = await UserModel.getAwardById(awardId, userId);
    
    if (!existingAward) {
      return NextResponse.json(
        { message: '奖项不存在或无权修改' },
        { status: 404 }
      );
    }
    
    // 准备更新数据
    const awardData = {
      name: body.name,
      issuer: body.issuer,
      date: body.date,
      description: body.description || null
    };
    
    // 更新奖项
    await UserModel.updateAward(awardId, userId, awardData);
    
    // 获取更新后的奖项详情
    const updatedAward = await UserModel.getAwardById(awardId, userId);
    
    return NextResponse.json(
      updatedAward,
      { status: 200 }
    );
  } catch (error: any) {
    console.error('更新奖项时出错:', error);
    
    return NextResponse.json(
      { message: '更新奖项失败', error: error.message },
      { status: 500 }
    );
  }
}

// DELETE /api/profile/awards/[id] - 删除特定获奖情况
export async function DELETE(
  req: NextRequest,
  { params }: { params: { id: string } }
) {
  try {
    // 从请求头获取token并验证用户身份
    const authHeader = req.headers.get('authorization');
    
    if (!authHeader || !authHeader.startsWith('Bearer ')) {
      return NextResponse.json(
        { message: '未授权访问' },
        { status: 401 }
      );
    }
    
    const token = authHeader.split(' ')[1];
    
    // 解析JWT token
    let userId;
    try {
      const payload = JSON.parse(atob(token.split('.')[1]));
      userId = payload.id;
      
      if (!userId) {
        return NextResponse.json(
          { message: '无效的用户凭证' },
          { status: 401 }
        );
      }
    } catch (e) {
      console.error('解析token失败:', e);
      return NextResponse.json(
        { message: '无效的用户凭证' },
        { status: 401 }
      );
    }
    
    const awardId = parseInt(params.id);
    
    if (isNaN(awardId)) {
      return NextResponse.json(
        { message: '无效的奖项ID' },
        { status: 400 }
      );
    }
    
    // 验证奖项所有权
    const existingAward = await UserModel.getAwardById(awardId, userId);
    
    if (!existingAward) {
      return NextResponse.json(
        { message: '奖项不存在或无权删除' },
        { status: 404 }
      );
    }
    
    // 删除奖项
    await UserModel.deleteAward(awardId, userId);
    
    return NextResponse.json(
      { message: '奖项删除成功' },
      { status: 200 }
    );
  } catch (error: any) {
    console.error('删除奖项时出错:', error);
    
    return NextResponse.json(
      { message: '删除奖项失败', error: error.message },
      { status: 500 }
    );
  }
} 